Code First পদ্ধতিতে, যখন ডেটাবেসে কোনো পরিবর্তন ঘটে, যেমন টেবিলের নতুন কলাম যোগ করা বা কোনো কলাম পরিবর্তন করা, তখন এই পরিবর্তনগুলো মডেল (যেমন, Entity ক্লাস) এর সাথে সিঙ্ক্রোনাইজ করা প্রয়োজন। EF Core এই কাজটি মাইগ্রেশন ব্যবস্থার মাধ্যমে পরিচালনা করে। মাইগ্রেশন একটি পদ্ধতি যা ডেটাবেস এবং মডেল এর মধ্যে পরিবর্তনগুলো ট্র্যাক করে এবং তাদের আপডেট করতে সহায়তা করে।
প্রথমেই, ডেটাবেসে যে কোনো পরিবর্তন করার পর, আপনি মডেল ক্লাস এবং DbContext এ পরিবর্তন করবেন। এরপর, আপনি Entity Framework এর মাইগ্রেশন ব্যবস্থাকে ব্যবহার করে ডেটাবেসের সাথে সিঙ্ক করতে পারবেন। এখানে কিছু ধাপ দেওয়া হলো যেগুলি আপনি অনুসরণ করতে পারেন:
ধরা যাক, আপনি একটি Student
ক্লাসে একটি নতুন প্রপার্টি যোগ করেছেন:
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
// নতুন প্রপার্টি যোগ করা হয়েছে
public string Email { get; set; }
}
এখন, আপনি মডেল ক্লাসে এই পরিবর্তনটি সম্পন্ন করেছেন।
এখন, আপনি ডেটাবেসে এই পরিবর্তনগুলো প্রয়োগ করতে চাইলে আপনাকে একটি নতুন মাইগ্রেশন তৈরি করতে হবে। Visual Studio এর Package Manager Console বা .NET CLI ব্যবহার করে আপনি মাইগ্রেশন তৈরি করতে পারেন।
Visual Studio Package Manager Console এ:
Add-Migration AddEmailToStudent
এটি একটি নতুন মাইগ্রেশন তৈরি করবে যার নাম হবে AddEmailToStudent
। এই মাইগ্রেশনের মধ্যে কোডের পরিবর্তন অনুযায়ী ডেটাবেসে পরিবর্তন করার জন্য প্রয়োজনীয় স্ক্রিপ্ট থাকবে।
মাইগ্রেশন তৈরি হওয়ার পর, আপনি ডেটাবেসে সেই পরিবর্তনগুলি প্রয়োগ করতে Update-Database
কমান্ড ব্যবহার করবেন। এটি ডেটাবেসের স্কিমা আপডেট করবে এবং নতুন প্রপার্টি Email
যুক্ত হবে।
Visual Studio Package Manager Console এ:
Update-Database
এটি ডেটাবেসের মধ্যে মাইগ্রেশন কার্যকর করবে এবং আপনার মডেল ক্লাসের সাথে ডেটাবেসের স্কিমা সিঙ্ক করবে।
আপনি যদি মাইগ্রেশন কোড দেখতে চান, তাহলে এটি সাধারণত Migrations ফোল্ডারে সংরক্ষিত হবে। সেখানে দুটি ফাইল থাকবে:
এটি একটি উদাহরণ হতে পারে:
public partial class AddEmailToStudent : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Email",
table: "Students",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Email",
table: "Students");
}
}
এটি দেখায় কিভাবে Email
কলাম Students
টেবিলে যুক্ত হয়েছে এবং মাইগ্রেশন প্রয়োগ করা হলে কী পরিবর্তন ঘটবে।
যদি আপনি মনে করেন যে এই মাইগ্রেশনটি ভুল ছিল বা আপনি আগের সংস্করণে ফিরে যেতে চান, তাহলে Remove-Migration
কমান্ড ব্যবহার করে মাইগ্রেশনটি রদ (rollback) করতে পারবেন।
Visual Studio Package Manager Console এ:
Remove-Migration
এটি আপনার শেষ মাইগ্রেশনটি রিমুভ করবে এবং কোডের পরিবর্তন পুনরায় সিঙ্ক করবে।
কখনো কখনো ডেটাবেসে নতুন কলাম বা টেবিল যোগ করার পর কিছু ডিফল্ট ডেটা সিডিং (seeding) করতে হয়। EF Core এর মাধ্যমে আপনি ডেটাবেস সিডিং পরিচালনা করতে পারেন।
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>().HasData(
new Student { Id = 1, Name = "John Doe", Age = 22, Email = "john.doe@example.com" },
new Student { Id = 2, Name = "Jane Doe", Age = 23, Email = "jane.doe@example.com" }
);
}
এটি নতুন সিডিং ডেটা ডেটাবেসে ইনসার্ট করে যখন আপনি Update-Database
কমান্ড চালাবেন।
এভাবে, ডেটাবেসের পরিবর্তনগুলি মডেল ক্লাসে সিঙ্ক করা সম্ভব, এবং Entity Framework এর মাইগ্রেশন ব্যবস্থার মাধ্যমে ডেটাবেস এবং মডেল দুটির মধ্যে একাধিক সংস্করণের পার্থক্য সমাধান করা যায়।
common.read_more